//package com.giscloud.core;
//
//import com.giscloud.amp.core.CacheManager;
//import com.giscloud.commons.exception.TokenException;
//import com.giscloud.commons.utils.JacksonUtil;
//import com.giscloud.commons.utils.SpringUtil;
//import com.giscloud.commons.utils.StringUtils;
//import com.giscloud.redis.utils.RedisUtils;
//import lombok.SneakyThrows;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Map;
//
///**
// * @Classname TokenUserUtil
// * @Description 获取用户信息
// * @Date 2020/6/9 15:23
// * @Created by gis
// */
//public class TokenUserUtil {
//    public final static String ACCESS_TOKEN = "giscloud-token";
//
//    private static String cacheType;
//
//    @Value("${spring.cache.type}")
//    public void setCacheType(String type){
//        TokenUserUtil.cacheType = type;
//    }
//    public static HttpServletRequest getRequest() {
//        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//    }
//
//    public static String  getAccessToken(){
//        String accessToken = getRequest().getHeader(ACCESS_TOKEN);
//        if(StringUtils.isBlank(accessToken)){
//            accessToken = getRequest().getParameter(ACCESS_TOKEN);
//        }
//        return accessToken;
//    }
//    /**
//     * 获取登录用户信息
//     *
//     * @return
//     */
//    @SneakyThrows
//    public static Token getToken(){
//        String accessToken = getAccessToken();
//        if(StringUtils.isEmpty(accessToken)){
//            throw  new TokenException("无token请求头信息");
//        }
//        String userJson = "";
//        if("Redis".equals(cacheType)){
//            RedisUtils redisUtils = SpringUtil.getBean("redisUtils", RedisUtils.class);
//            if(redisUtils.get(RedisConstant.REDIS_USER_TOKEN + accessToken) == null){
//                throw  new TokenException("token信息为空，请重新登录");
//            }
//            // 从Redis中获取用户信息
//            userJson = (String) redisUtils.get(RedisConstant.REDIS_USER_TOKEN + getAccessToken());
//        }else{
//            CacheManager cacheManager = SpringUtil.getBean("cacheManager", CacheManager.class);
//            if(cacheManager.get(RedisConstant.REDIS_USER_TOKEN + accessToken) == null){
//                throw  new TokenException("token信息为空，请重新登录");
//            }
//            // 从Redis中获取用户信息
//            userJson = (String) cacheManager.get(RedisConstant.REDIS_USER_TOKEN + getAccessToken());
//        }
//        return JacksonUtil.json2Bean(userJson, Token.class);
//    }
//
//    /**
//     * 获取当前登录用户id
//     * @return
//     */
//    public static Long getUserId(){
//        try {
//            Token token = getToken();
//            return token.getStaffId();
//        } catch (Exception e) {
//            //e.printStackTrace();
//            return 1L;
//        }
//    }
//
//    /**
//     * 获取登录用户所属机构id（单个）
//     * @return
//     */
//    public static Long getOrgId(){
//        try {
//            Token token = getToken();
//            Map orgMap = token.getOrgMap();
//            return (Long)((Map)orgMap.get(orgMap.keySet().toArray()[0])).get("orgId");
//        } catch (Exception e) {
//            //e.printStackTrace();
//            return 2L;
//        }
//
//    }
//
//
//}
